home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / dev / moni / systemviewer.lha / SysLocks.c < prev    next >
C/C++ Source or Header  |  1999-12-05  |  8KB  |  314 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Jim Steichen
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #define GetString( g )      ((( struct StringInfo * )g->SpecialInfo )->Buffer  )
  26.  
  27. #define GD_LLV                                 0
  28. #define GD_Update                              1
  29. #define GD_Cancel                              2
  30. #define GD_Unlock                              3
  31.  
  32. #define ATS_CNT 4
  33.  
  34. PRIVATE char ver[] = "$VER: SysLocks 1.0 (12/20/1999) by J.T. Steichen";
  35.  
  36. struct Screen *Scr = NULL;
  37. UBYTE *PubScreenName = "Workbench";
  38. APTR VisualInfo = NULL;
  39. struct Window *ATSWnd = NULL;
  40. struct Gadget *ATSGList = NULL;
  41. struct IntuiMessage ATSMsg;
  42. struct Gadget *ATSGadgets[4];
  43. UWORD ATSLeft = 0;
  44. UWORD ATSTop = 14;
  45. UWORD ATSWidth = 632;
  46. UWORD ATSHeight = 228;
  47. UBYTE *ATSWdt = ( UBYTE * ) "AmigaTalk System Locks Info:";
  48. struct TextAttr *Font, Attr;
  49. UWORD FontX, FontY;
  50. UWORD OffX, OffY;
  51. struct TextFont *ATSFont = NULL;
  52.  
  53. extern struct MinList LLV0List;
  54.  
  55. struct Node LLV0Nodes[] = {
  56.    ( struct Node * ) & LLV0List.mlh_Tail, ( struct Node * ) & LLV0List.mlh_Head, 0, 0, "Address  Access   Path"};
  57.  
  58. struct MinList LLV0List = {
  59.    ( struct MinNode * ) & LLV0Nodes[0], ( struct MinNode * ) NULL, ( struct MinNode * ) & LLV0Nodes[0]};
  60.  
  61. UWORD ATSGTypes[] = {
  62.    LISTVIEW_KIND,
  63.    BUTTON_KIND,
  64.    BUTTON_KIND,
  65.    BUTTON_KIND
  66.    };
  67.  
  68. PRIVATE int LLVClicked( void )
  69.    {
  70.    /* routine when gadget "" is clicked. */
  71.    }
  72.  
  73. PRIVATE int UpdateClicked( void )
  74.    {
  75.    /* routine when gadget "_Update" is clicked. */
  76.    }
  77.  
  78. PRIVATE int CancelClicked( void )
  79.    {
  80.    /* routine when gadget "_Cancel" is clicked. */
  81.    }
  82.  
  83. PRIVATE int UnlockClicked( void )
  84.    {
  85.    /* routine when gadget "Unlock" is clicked. */
  86.    }
  87.  
  88. struct NewGadget ATSNGad[] = {
  89.    2, 3, 627, 200, NULL, NULL, GD_LLV, 0, NULL, ( APTR ) LLVClicked,
  90.    4, 205, 71, 17, ( UBYTE * ) "_Update", NULL, GD_Update, PLACETEXT_IN, NULL, ( APTR ) UpdateClicked,
  91.    554, 205, 72, 17, ( UBYTE * ) "_Cancel", NULL, GD_Cancel, PLACETEXT_IN, NULL, ( APTR ) CancelClicked,
  92.    82, 205, 71, 17, ( UBYTE * ) "Unlock", NULL, GD_Unlock, PLACETEXT_IN, NULL, ( APTR ) UnlockClicked
  93.    };
  94.  
  95. ULONG ATSGTags[] = {
  96.    ( LAYOUTA_Spacing ), 2, ( TAG_DONE ),
  97.    ( GT_Underscore ), '_', ( TAG_DONE ),
  98.    ( GT_Underscore ), '_', ( TAG_DONE ),
  99.    ( GA_Disabled ), TRUE, ( TAG_DONE )
  100.    };
  101.  
  102. static UWORD ComputeX( UWORD value )
  103.    {
  104.    return ( ( UWORD ) ( ( ( FontX * value ) + 4 ) / 8 ) );
  105.    }
  106.  
  107. static UWORD ComputeY( UWORD value )
  108.    {
  109.    return ( ( UWORD ) ( ( ( FontY * value ) + 4 ) / 8 ) );
  110.    }
  111.  
  112. static void ComputeFont( UWORD width, UWORD height )
  113.    {
  114.    Forbid(  );
  115.    Font = &Attr;
  116.    Font->ta_Name = ( STRPTR ) GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  117.    Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  118.    FontX = GfxBase->DefaultFont->tf_XSize;
  119.    Permit(  );
  120.  
  121.    OffX = Scr->WBorLeft;
  122.    OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  123.  
  124.    if ( width && height )
  125.       {
  126.       if ( ( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  127.          goto UseTopaz;
  128.       if ( ( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  129.          goto UseTopaz;
  130.       }
  131.    return;
  132.  
  133. UseTopaz:
  134.    Font->ta_Name = ( STRPTR ) "topaz.font";
  135.    FontX = FontY = Font->ta_YSize = 8;
  136.    }
  137.  
  138. PRIVATE int LLVClicked( void )
  139.    {
  140.    /* routine when gadget "" is clicked. */
  141.    }
  142.  
  143. PRIVATE int UpdateClicked( void )
  144.    {
  145.    /* routine when gadget "_Update" is clicked. */
  146.    }
  147.  
  148. PRIVATE int CancelClicked( void )
  149.    {
  150.    /* routine when gadget "_Cancel" is clicked. */
  151.    }
  152.  
  153. PRIVATE int UnlockClicked( void )
  154.    {
  155.    /* routine when gadget "Unlock" is clicked. */
  156.    }
  157.  
  158. PRIVATE int ATSCloseWindow( void )
  159.    {
  160.    /* routine for "IDCMP_CLOSEWINDOW". */
  161.    }
  162.  
  163. int SetupScreen( void )
  164.    {
  165.    if ( !( Scr = LockPubScreen( PubScreenName ) ) )
  166.       return ( 1L );
  167.  
  168.    ComputeFont( 0, 0 );
  169.  
  170.    if ( !( VisualInfo = GetVisualInfo( Scr, TAG_DONE ) ) )
  171.       return ( 2L );
  172.  
  173.    return ( 0L );
  174.    }
  175.  
  176. void CloseDownScreen( void )
  177.    {
  178.    if ( VisualInfo )
  179.       {
  180.       FreeVisualInfo( VisualInfo );
  181.       VisualInfo = NULL;
  182.       }
  183.  
  184.    if ( Scr )
  185.       {
  186.       UnlockPubScreen( NULL, Scr );
  187.       Scr = NULL;
  188.       }
  189.    }
  190.  
  191. int HandleATSIDCMP( void )
  192.    {
  193.    struct IntuiMessage *m;
  194.    int ( *func ) (  );
  195.    BOOL running = TRUE;
  196.  
  197.    while ( running == TRUE )
  198.       {
  199.       if ( ( m = GT_GetIMsg( ? ? Wnd->UserPort ) ) == NULL )
  200.          {
  201.          ( void ) Wait( 1L << ? ? Wnd->UserPort->mp_SigBit );
  202.          continue;
  203.          }
  204.  
  205.       CopyMem( ( char * ) m, ( char * ) &ATSMsg, ( long ) sizeof( struct IntuiMessage ) );
  206.  
  207.       GT_ReplyIMsg( m );
  208.  
  209.       switch ( ATSMsg.Class )
  210.          {
  211.  
  212.          case IDCMP_REFRESHWINDOW:
  213.             GT_BeginRefresh( ATSWnd );
  214.             GT_EndRefresh( ATSWnd, TRUE );
  215.             break;
  216.  
  217.          case IDCMP_CLOSEWINDOW:
  218.             running = ATSCloseWindow(  );
  219.             break;
  220.  
  221.          case IDCMP_GADGETUP:
  222.          case IDCMP_GADGETDOWN:
  223.             func = ( void * ) ( ( struct Gadget * ) ATSMsg.IAddress )->UserData;
  224.             running = func(  );
  225.             break;
  226.             }
  227.       }
  228.    return ( running );
  229.    }
  230.  
  231. int OpenATSWindow( void )
  232.    {
  233.    struct NewGadget ng;
  234.    struct Gadget *g;
  235.    UWORD lc, tc;
  236.    UWORD wleft = ATSLeft, wtop = ATSTop, ww, wh;
  237.  
  238.    ComputeFont( ATSWidth, ATSHeight );
  239.  
  240.    ww = ComputeX( ATSWidth );
  241.    wh = ComputeY( ATSHeight );
  242.  
  243.    if ( ( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width )
  244.       wleft = Scr->Width - ww;
  245.    if ( ( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height )
  246.       wtop = Scr->Height - wh;
  247.  
  248.    if ( !( ATSFont = OpenDiskFont( Font ) ) )
  249.       return ( 5L );
  250.  
  251.    if ( !( g = CreateContext( &ATSGList ) ) )
  252.       return ( 1L );
  253.  
  254.    for ( lc = 0, tc = 0; lc < ATS_CNT; lc++ )
  255.       {
  256.  
  257.       CopyMem( ( char * ) &ATSNGad[lc], ( char * ) &ng, ( long ) sizeof( struct NewGadget ) );
  258.  
  259.       ng.ng_VisualInfo = VisualInfo;
  260.       ng.ng_TextAttr = Font;
  261.       ng.ng_LeftEdge = OffX + ComputeX( ng.ng_LeftEdge );
  262.       ng.ng_TopEdge = OffY + ComputeY( ng.ng_TopEdge );
  263.       ng.ng_Width = ComputeX( ng.ng_Width );
  264.       ng.ng_Height = ComputeY( ng.ng_Height );
  265.  
  266.       ATSGadgets[lc] = g = CreateGadgetA( ( ULONG ) ATSGTypes[lc], g, &ng, ( struct TagItem * ) & ATSGTags[tc] );
  267.  
  268.       while ( ATSGTags[tc] )
  269.          tc += 2;
  270.       tc++;
  271.  
  272.       if ( NOT g )
  273.          return ( 2L );
  274.       }
  275.  
  276.    if ( !( ATSWnd = OpenWindowTags( NULL,
  277.                                     WA_Left, wleft,
  278.                                     WA_Top, wtop,
  279.                                     WA_Width, ww + OffX + Scr->WBorRight,
  280.                                     WA_Height, wh + OffY + Scr->WBorBottom,
  281.                                     WA_IDCMP, LISTVIEWIDCMP | BUTTONIDCMP | IDCMP_CLOSEWINDOW | IDCMP_REFRESHWINDOW,
  282.                                     WA_Flags, WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_CLOSEGADGET | WFLG_SMART_REFRESH | WFLG_ACTIVATE | WFLG_RMBTRAP,
  283.                                     WA_Gadgets, ATSGList,
  284.                                     WA_Title, ATSWdt,
  285.                                     WA_ScreenTitle, "AmigaTalk System Info",
  286.                                     TAG_DONE ) ) )
  287.       return ( 4L );
  288.  
  289.    GT_RefreshWindow( ATSWnd, NULL );
  290.  
  291.    return ( 0L );
  292.    }
  293.  
  294. void CloseATSWindow( void )
  295.    {
  296.    if ( ATSWnd )
  297.       {
  298.       CloseWindow( ATSWnd );
  299.       ATSWnd = NULL;
  300.       }
  301.  
  302.    if ( ATSGList )
  303.       {
  304.       FreeGadgets( ATSGList );
  305.       ATSGList = NULL;
  306.       }
  307.  
  308.    if ( ATSFont )
  309.       {
  310.       CloseFont( ATSFont );
  311.       ATSFont = NULL;
  312.       }
  313.    }
  314.